﻿#include <Windows.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <math.h>
#include "Util.h"
#include "Source\Othello.h"
#pragma warning(disable:4305)
Othello othello;
Util::Util()
{
}
Util::~Util()
{
}
bool Util::Init()
{
	//Clear màn hình thành màu đen
	glClearColor(0.0,0.0,0.0,0.0);
	m_fAngle=0.0f;
	return true;
}
bool Util::ShutDown()
{
	/*sau khi shut down game hay gì sẽ giải phóng bộ nhớ hay resources tại đây*/
	return true;
}
void Util::SetupProjection(int width,int height)
{
	if (height == 0)                   // chắc chắn không chia cho height 0
    {
        height = 1;                 
    }
    glViewport(0, 0, width, height);        //reset lại viewport về width height muốn
    glMatrixMode(GL_PROJECTION);            //set lại ma trận cho projection
    glLoadIdentity();                       //reset ma trận projection

    // tính toán góc projection
    gluPerspective(52.0f,(GLfloat)width/(GLfloat)height,1.0f,1000.0f);

    glMatrixMode(GL_MODELVIEW);             // set ma trận modelview
    glLoadIdentity();                       // reset ma trận modelview

	// Lưu lại width height màn hình
    m_iWindowWidth = width;
    m_iWindowHeight = height;
}
void Util::Prepare(float dt)
{
	/* các setup các biến các thuộc tính trước khi render tại đây*/
	m_fAngle+=0.1f;
}
void Util::Render()
{
	/*mọi thứ liên quan hàm vẽ đều gọi từ đây*/
	// xóa màn hình và depth buffer
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     
    glLoadIdentity();


	glPushMatrix();
	gluLookAt(4,6,10,4,0,5,0,1,0);
	glTranslatef(0, 0,0.0f);
	othello.DrawBoard();
	othello.UpdateBoard();
	glPopMatrix();

    // lùi lại 5 unit về sau và xoay cùng lúc 3 trục tọa độ
    //glTranslatef(0.0, 0.0, -5.0f);
    //glRotatef(m_fAngle, 1.0f, 0.0f, 0.0f);
    //glRotatef(m_fAngle, 0.0f, 1.0f, 0.0f);
    //glRotatef(m_fAngle, 0.0f, 0.0f, 1.0f);

    ////tô màu hình
    //glColor3f(0.7f, 1.0f, 0.3f);

    //// vẽ 1 tam giác
    //glBegin(GL_TRIANGLES);
    //    glVertex3f(1.0f, -1.0f, 0.0f);
    //    glVertex3f(-1.0f, -1.0f, 0.0f);
    //    glVertex3f(0.0f, 1.0f, 0.0f);
    //glEnd();
}